package study.javase.thread;

import java.util.concurrent.FutureTask;

/**
 * 多线程开启方式（3） 实现Callable接口，实现call()
 * 步骤
 *1实现Callable接口，并实现call()方法，然后创建该实现类的实例
 *
 * 2】使用FutureTask类来包装Callable对象
 *
 * 3】使用FutureTask对象作为Thread对象的target创建并启动线程（因为FutureTask实现了Runnable接口）
 * * 4】调用FutureTask对象的get()方法来获得子线程执行结束后的返回值，调用get方法
 * @author LiShaowen
 * @date 2020/9/4 15:06
 */
public class StartCallable /*implements Callable<String>*/ {
    /*@Override
    public String  call() throws Exception {
        for ( int x = 0 ; x < 10 ; x ++ ) {
            System.out.println(Thread.currentThread().getName() + " : "+x);
        }
        return "线程执行完毕！";
    }*/

    public static void main(String[] args) throws Exception {
        StartCallable startCallable = new StartCallable();
        new Thread(new FutureTask<String>(() -> {
            for (int x = 0; x < 10; x++) {
                System.out.println(Thread.currentThread().getName() + " : " + x);
            }
            return "执行完毕";
        }),"线程1").start();


    }
}
